package com.gadgets.framework.service.impl;

import com.gadgets.framework.common.util.RedisUtil;
import com.gadgets.framework.service.IWoodenProductService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * 功能说明：
 *
 * @author Unclexiu
 * @version V202101.00.000
 * @data 2022-07-19
 * 修改记录：  修改日期          修改人员    修改说明
 * 2022-07-19  xiujunqing   创建文件
 */
@Service
public class WoodenPriductServiceImpl implements IWoodenProductService {

	protected final Logger logger = LoggerFactory.getLogger(this.getClass());

	@Autowired
	private RedisUtil redisUtil;

	/**
	 * 按模块生成令牌
	 * @param moduelKey	模块标识
	 * @param maxWooden	模块最大令牌数
	 * @param step		本次生成数量
	 */
	@Override
	public void productWoodenForModuel(String moduelKey, long maxWooden, int step) {
		String woodenNum = redisUtil.getNxStringCacheByKey(moduelKey);
		long woodenNumL = Long.parseLong(woodenNum);
		logger.info("当前模块：{}，令牌数：{}", moduelKey, woodenNum);
		if(woodenNumL<maxWooden) {
			// 每次生成 step 数量的令牌到缓存中
			redisUtil.increByKey(moduelKey, step);
		}else{
			logger.info("模块：{}令牌数已达到上限，为了保护系统，不发放更多令牌", moduelKey);
		}
	}

}
